﻿/*800. 数组元素的目标和
题目
给定两个升序排序的有序数组 A和 B，以及一个目标值 x
数组下标从 0开始。
请你求出满足 A[i] + B[j] = x的数对(i, j)
数据保证有唯一解。

输入格式
第一行包含三个整数 n, m, x，分别表示 A的长度，B的长度以及目标值 x
第二行包含 n个整数，表示数组 A
第三行包含 m个整数，表示数组 B

输出格式
共一行，包含两个整数 i和 j

数据范围
数组长度不超过 105
同一数组内元素各不相同。
1≤数组元素≤109

输入样例：
4 5 6
1 2 4 7
3 4 6 8 9
输出样例：
1 1
*/
#include<iostream>
using namespace std;
const int N = 100010;
int A[N], B[N];
/*1.暴力求解
int main()
{
    int n,m,x;
    cin>>n>>m>>x;
    for(int i=0;i<n;i++)    scanf("%d",&A[i]);
    for(int j=0;j<m;j++)    scanf("%d",&B[j]);//字母对应！
    for(int i=0;i<n;i++)
    {
        int t=x-A[i];
        //二分查找
        int l=0,r=m-1,mid;
        while(l<r)
        {
            mid=(l+r)>>1;
            if(B[mid]>=t)   r=mid;
            else    l=mid+1;
        }
        if(B[r]==t)
        {
            cout<<i<<" "<<r;
            break;
        }
    }
    return 0;
}
*/

//2.双指针
int main()
{
    int n, m, x;
    cin >> n >> m >> x;
    for (int i = 0; i < n; i++)    scanf("%d", &A[i]);
    for (int j = 0; j < m; j++)    scanf("%d", &B[j]);
    for (int i = 0, j = m - 1; i < n; i++)
    {
        while (j >= 0 && A[i] + B[j] > x)   j--;//A[i]+B[j]>x
        if (A[i] + B[j] == x)
        {
            cout << i << " " << j;
            break;
        }
    }
}
/*总结
1.字母对应 i,n,A[i]; j,m,B[j]
2.双指针内  while (j >= 0 && A[i] + B[j] > x)   j--;//A[i]+B[j]>x
*/